{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 折线图绘制"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据输入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=[10,20,30,40,50,60,70,80,90,100]\n",
    "y1=[35.6,43.8,59.1,61,63.9,64.5,66,66.7,66.8,66.9]\n",
    "y2=[59.8,65.4,71,72.0,73.2,75.7,76,78.6,78.9,79.2]\n",
    "y3=[60.1,66.9,71.5,72.5,74.7,76.5,77.3,79.4,79.4,79.5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=[10,20,30,40,50,60,70,80,90,100]\n",
    "y1=[50]\n",
    "y2=[59.8,65.4,71,72.0,73.2,75.7,76,78.6,78.9,79.2]\n",
    "y3=[60.1,66.9,71.5,72.5,74.7,76.5,77.3,79.4,79.4,79.5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x,y1,label='BM25',marker = \"x\",markersize=8)#xmarker设置形状 markersize设置形状大小\n",
    "plt.plot(x,y2,label='Dense retrieve',marker = \"x\",markersize=8)\n",
    "plt.plot(x,y3,label='BM25+Dense retrieve',marker = \"x\",markersize=8)\n",
    "plt.legend()\n",
    "# plt.grid() #添加网格\n",
    "plt.xlabel(\"N\")\n",
    "plt.ylabel(\"Accuracy(%)\")\n",
    "#设置像素\n",
    "plt.rcParams['savefig.dpi'] = 300 #图片像素\n",
    "#保存图片\n",
    "plt.savefig('img/test2.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = ('BM25', 'BM25+BERT', 'Dense retrieve', 'Dense retrieve+BERT', 'Our method')\n",
    "y = [103, 323, 117, 340, 408]\n",
    "# plt.xticks(rotation=-15)    # 设置x轴标签旋转角度\n",
    "plt.barh(x, y)\n",
    "\n",
    "plt.xlabel(\"Time(ms)\")\n",
    "\n",
    "#设置像素\n",
    "plt.rcParams['savefig.dpi'] = 300 #图片像素\n",
    "#保存图片\n",
    "plt.savefig('img/test3.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 颜色线条等选项"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "显示的颜色可查找matplotlib颜色表，就类似red;black;green这类的颜色，不过颜色表由很多颜色可供选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![matplotlib线段类型](img/matplotlib线段类型.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 热力图绘制"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据输入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>text_a</th>\n",
       "      <th>text_b</th>\n",
       "      <th>bm25 relativity</th>\n",
       "      <th>Q-A relativity</th>\n",
       "      <th>Q-Q similarity</th>\n",
       "      <th>keyword importance</th>\n",
       "      <th>label</th>\n",
       "      <th>triple similarity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>0.999995</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>25.224962</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>卡被冻了要怎么还钱</td>\n",
       "      <td>0.999994</td>\n",
       "      <td>0.876478</td>\n",
       "      <td>14.660158</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.876478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>卡冻了怎么还款</td>\n",
       "      <td>0.999995</td>\n",
       "      <td>0.804948</td>\n",
       "      <td>16.301762</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.804948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>银行卡冻结了如何还钱</td>\n",
       "      <td>0.999995</td>\n",
       "      <td>0.801179</td>\n",
       "      <td>8.209804</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.801179</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>怎么换卡支付贷款</td>\n",
       "      <td>0.996464</td>\n",
       "      <td>0.781458</td>\n",
       "      <td>5.697832</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.781458</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>我什么时候才能把所有的贷款还完</td>\n",
       "      <td>0.973437</td>\n",
       "      <td>0.741592</td>\n",
       "      <td>4.408284</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.741592</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>解冻了为什么不能贷款了</td>\n",
       "      <td>0.003445</td>\n",
       "      <td>0.799049</td>\n",
       "      <td>6.897241</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.799049</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>卡全部冻了怎么还贷款</td>\n",
       "      <td>换了卡怎么还不上钱</td>\n",
       "      <td>0.000404</td>\n",
       "      <td>0.758470</td>\n",
       "      <td>5.629963</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.758470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>小米金融的存款未到期想支取</td>\n",
       "      <td>小米金融的存款未到期想支取</td>\n",
       "      <td>0.999995</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>33.561410</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>4.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>小米金融的存款未到期想支取</td>\n",
       "      <td>度小满的存款未到期想支取</td>\n",
       "      <td>0.999994</td>\n",
       "      <td>0.821597</td>\n",
       "      <td>22.958714</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3.821597</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          text_a           text_b  bm25 relativity  Q-A relativity  \\\n",
       "0     卡全部冻了怎么还贷款       卡全部冻了怎么还贷款         0.999995        1.000000   \n",
       "1     卡全部冻了怎么还贷款        卡被冻了要怎么还钱         0.999994        0.876478   \n",
       "2     卡全部冻了怎么还贷款          卡冻了怎么还款         0.999995        0.804948   \n",
       "3     卡全部冻了怎么还贷款       银行卡冻结了如何还钱         0.999995        0.801179   \n",
       "4     卡全部冻了怎么还贷款         怎么换卡支付贷款         0.996464        0.781458   \n",
       "5     卡全部冻了怎么还贷款  我什么时候才能把所有的贷款还完         0.973437        0.741592   \n",
       "6     卡全部冻了怎么还贷款      解冻了为什么不能贷款了         0.003445        0.799049   \n",
       "7     卡全部冻了怎么还贷款        换了卡怎么还不上钱         0.000404        0.758470   \n",
       "8  小米金融的存款未到期想支取    小米金融的存款未到期想支取         0.999995        1.000000   \n",
       "9  小米金融的存款未到期想支取     度小满的存款未到期想支取         0.999994        0.821597   \n",
       "\n",
       "   Q-Q similarity  keyword importance  label  triple similarity  \n",
       "0       25.224962                   0      1           1.000000  \n",
       "1       14.660158                   0      1           0.876478  \n",
       "2       16.301762                   0      1           0.804948  \n",
       "3        8.209804                   0      1           0.801179  \n",
       "4        5.697832                   0      0           0.781458  \n",
       "5        4.408284                   0      0           0.741592  \n",
       "6        6.897241                   0      0           0.799049  \n",
       "7        5.629963                   0      0           0.758470  \n",
       "8       33.561410                   3      1           4.000000  \n",
       "9       22.958714                   3      0           3.821597  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=pd.read_csv(\"data/svm_train_new.txt\",sep=\"\\t\")\n",
    "df.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "'greys' is not a valid value for name; supported values are 'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'Wistia', 'Wistia_r', 'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 'afmhot', 'afmhot_r', 'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 'brg', 'brg_r', 'bwr', 'bwr_r', 'cividis', 'cividis_r', 'cool', 'cool_r', 'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'crest', 'crest_r', 'cubehelix', 'cubehelix_r', 'flag', 'flag_r', 'flare', 'flare_r', 'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 'gist_ncar', 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 'gnuplot2', 'gnuplot2_r', 'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'icefire', 'icefire_r', 'inferno', 'inferno_r', 'jet', 'jet_r', 'magma', 'magma_r', 'mako', 'mako_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 'rainbow', 'rainbow_r', 'rocket', 'rocket_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 'vlag', 'vlag_r', 'winter', 'winter_r'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_6240/2959610881.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[0mcols\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcorrmat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnlargest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel_name\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlabel_name\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[0mcm\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcorrcoef\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcols\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mT\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mfig\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mheatmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcm\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcmap\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"greys\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcbar\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mannot\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msquare\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfmt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'.2f'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mannot_kws\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'size'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0myticklabels\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcols\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxticklabels\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcols\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\seaborn\\_decorators.py\u001b[0m in \u001b[0;36minner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m     44\u001b[0m             )\n\u001b[0;32m     45\u001b[0m         \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 46\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     47\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0minner_f\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     48\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\seaborn\\matrix.py\u001b[0m in \u001b[0;36mheatmap\u001b[1;34m(data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, linewidths, linecolor, cbar, cbar_kws, cbar_ax, square, xticklabels, yticklabels, mask, ax, **kwargs)\u001b[0m\n\u001b[0;32m    538\u001b[0m     \"\"\"\n\u001b[0;32m    539\u001b[0m     \u001b[1;31m# Initialize the plotter object\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 540\u001b[1;33m     plotter = _HeatMapper(data, vmin, vmax, cmap, center, robust, annot, fmt,\n\u001b[0m\u001b[0;32m    541\u001b[0m                           \u001b[0mannot_kws\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcbar\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcbar_kws\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxticklabels\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    542\u001b[0m                           yticklabels, mask)\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\seaborn\\matrix.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, cbar, cbar_kws, xticklabels, yticklabels, mask)\u001b[0m\n\u001b[0;32m    157\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    158\u001b[0m         \u001b[1;31m# Determine good default values for the colormapping\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 159\u001b[1;33m         self._determine_cmap_params(plot_data, vmin, vmax,\n\u001b[0m\u001b[0;32m    160\u001b[0m                                     cmap, center, robust)\n\u001b[0;32m    161\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\seaborn\\matrix.py\u001b[0m in \u001b[0;36m_determine_cmap_params\u001b[1;34m(self, plot_data, vmin, vmax, cmap, center, robust)\u001b[0m\n\u001b[0;32m    211\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcmap\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0micefire\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    212\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 213\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcmap\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmpl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_cmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    214\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcmap\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmpl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolors\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mListedColormap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\matplotlib\\cm.py\u001b[0m in \u001b[0;36mget_cmap\u001b[1;34m(name, lut)\u001b[0m\n\u001b[0;32m    188\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolors\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mColormap\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    189\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 190\u001b[1;33m     \u001b[0m_api\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcheck_in_list\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msorted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_cmap_registry\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    191\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mlut\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    192\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0m_cmap_registry\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\matplotlib\\_api\\__init__.py\u001b[0m in \u001b[0;36mcheck_in_list\u001b[1;34m(_values, _print_supported_values, **kwargs)\u001b[0m\n\u001b[0;32m    124\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mval\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    125\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0m_print_supported_values\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 126\u001b[1;33m                 raise ValueError(\n\u001b[0m\u001b[0;32m    127\u001b[0m                     \u001b[1;34mf\"{val!r} is not a valid value for {key}; \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    128\u001b[0m                     f\"supported values are {', '.join(map(repr, values))}\")\n",
      "\u001b[1;31mValueError\u001b[0m: 'greys' is not a valid value for name; supported values are 'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'Wistia', 'Wistia_r', 'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 'afmhot', 'afmhot_r', 'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 'brg', 'brg_r', 'bwr', 'bwr_r', 'cividis', 'cividis_r', 'cool', 'cool_r', 'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'crest', 'crest_r', 'cubehelix', 'cubehelix_r', 'flag', 'flag_r', 'flare', 'flare_r', 'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 'gist_ncar', 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 'gnuplot2', 'gnuplot2_r', 'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'icefire', 'icefire_r', 'inferno', 'inferno_r', 'jet', 'jet_r', 'magma', 'magma_r', 'mako', 'mako_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 'rainbow', 'rainbow_r', 'rocket', 'rocket_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 'vlag', 'vlag_r', 'winter', 'winter_r'"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 相关性最大的k个特征\n",
    "label_name=\"label\"\n",
    "corrmat = df.corr()\n",
    "plt.subplots(figsize=(10,8))\n",
    "k = 10\n",
    "cols = corrmat.nlargest(k, label_name)[label_name].index\n",
    "cm = np.corrcoef(df[cols].values.T)\n",
    "fig=sns.heatmap(data=cm, cmap=\"greys\", cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 保存热力图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "heatmap = fig.get_figure()\n",
    "heatmap.savefig(\"img/feature_hot.png\", dpi = 400)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "p=[0.64,0.638,0.636,0.634,0.632,0.618,0.574]\n",
    "t=[335,249,150,100,62,30,13]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.00191044776119403\n",
      "0.002562248995983936\n",
      "0.00424\n",
      "0.00634\n",
      "0.010193548387096775\n",
      "0.0206\n",
      "0.04415384615384615\n"
     ]
    }
   ],
   "source": [
    "for pi,ti in zip(p,t):\n",
    "    print(pi/ti)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
